
#pragma once
#include<iostream>
#include<string>
#include<ctemplate/template.h>
#include"../comm/log.hpp"
#include"oj_model.hpp"

namespace ns_view
{
 
 using namespace ns_log;
 using namespace ns_model;
 using namespace ns_util;
 
const std::string template_path="./template_html/";
class View
{
public:

 View(){}
 ~View(){}
 public:
 void AllExpandHtml(const std::vector<struct Question>&questions,string* html)
 {
     std::string src_html= template_path+"all_questions.html";
       //形成数字典
     ctemplate::TemplateDictionary root("all_questions");
      for(const auto&q:questions)
      {
       ctemplate::TemplateDictionary* sub=root.AddSectionDictionary("question_list");
       sub->SetValue("number",q.number);
       sub->SetValue("title",q.title);
       sub->SetValue("star",q.star);
      
      }
      //渲染的html
      ctemplate::Template* tpl=ctemplate::Template::GetTemplate(src_html,ctemplate::DO_NOT_STRIP);

      //完成渲染
      tpl->Expand(html,&root);
     // LOG(INFO)<<"html:"<<*html<<"\n";
 }
 void OneExpandHtml(const struct Question q,std::string* html)
 {

  std::string src_html=template_path+"one_question.html";
  ctemplate::TemplateDictionary root("one_question");
  root.SetValue("number",q.number);
  root.SetValue("title",q.title);
  root.SetValue("star",q.star);
  root.SetValue("desc",q.desc);
  root.SetValue("pre_code",q.header);
  //LOG(FATAL)<<" desc:\n"<< q.desc << std::endl;
  ctemplate::Template* tpl=ctemplate::Template::GetTemplate(src_html,ctemplate::DO_NOT_STRIP);
   tpl->Expand(html,&root);
       
 }

};


}